A batch job is a computer program or set of programs processed in batch mode. During batch mode, a sequence of commands for execution by an operating system is often listed in a file (often called a batch file, command file, or shell script) or other data structure and is submitted for execution as a single unit. A batch job typically involves reading data from a database, processing the data, and then returning the processed data to the database. Other batch jobs may merely read or collect existing data to prepare reports, generate new data, and so forth. The batch jobs may pertain to a wide variety of applications such as: financial management reports, marketing reports, supply chain management reports, inventory reports, invoice reports, customer account processing, automated system backup, automated data backup, system performance reporting, and the like. The execution of batch jobs may be automated or manually initiated.
Batch jobs may be scheduled according to a variety of criteria including factors such as the date of the batch job request, amount of time and/or processing resources required to execute the request, business requirements, system resources, downtimes, and the like. As a result, batch jobs start times are typically scheduled by administrators using a scheduler taking into account such factors. With such arrangements, end users requiring batch processing (e.g., printing business documents overnight) place a request with an administrator to schedule the processing of a particular batch job. Regardless, batch job requests or executions are often processed through a job scheduler that manages the initiation of the execution.
These batch processes are often characterized by creating significant load on the system resources, which has negative influence on the performance of other tasks running on the same system. Thus, more comprehensive or process-intensive batch jobs are often executed after business hours when system usage is lower to minimize impact to users. For long running jobs a start time can be scheduled easily, but it may be difficult to predict the corresponding end time. The job scheduler may take into account job queues or job priority. For example, a category of jobs may be assigned to a particular queue that concurrently executes a predefined number of jobs. In another example, batch job processing may be prioritized such that higher priority batch jobs are processed prior to batch jobs with lower conflicting priority. Other criteria may be taken into account when prioritizing conflicting batch job requests for execution.